/*
 * linda.h
 *
 */

#ifndef LINDA_H_
#define LINDA_H_

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <unistd.h>
#include "tuple.h"
#include "rwlock.h"
#include "semaphore.h"
#include "pattern.h"
#include "fileread.h"

#define MAX_PATH 255

typedef struct{
	char* path;
	_linda_rw_lock lock;
}linda_space;

linda_space* linda_create(char *path);
linda_space* linda_init(char *path);
void linda_close(linda_space * linda);
void linda_destroy(linda_space * linda);

void linda_output(linda_space * linda,const tuple * t);
tuple* linda_input(linda_space * linda,pattern* p ,int timeout);
tuple* linda_read(linda_space * linda,pattern* p ,int timeout);

unsigned int seq(linda_space* space);
char* seqstr(linda_space* space);

pid_t _get_last_pid(linda_space* space);
void _set_last_pid(linda_space* space, pid_t pid);


#endif /* LINDA_H_ */
